Static Analysis for Checking Data Format Compatibility of Programs

نویسندگان

  • Pranavadatta Devaki
  • Aditya Kanade
چکیده

Large software systems are developed by composing multiple programs. If the programs manipulate and exchange complex data, such as network packets or files, it is essential to establish that they follow compatible data formats. Most of the complexity of data formats is associated with the headers. In this paper, we address compatibility of programs operating over headers of network packets, files, images, etc. As format specifications are rarely available, we infer the format associated with headers by a program as a set of guarded layouts. In terms of these formats, we define and check compatibility of (a) producer-consumer programs and (b) different versions of producer (or consumer) programs. A compatible producer-consumer pair is free of type mismatches and logical incompatibilities such as the consumer rejecting valid outputs generated by the producer. A backward compatible producer (resp. consumer) is guaranteed to be compatible with consumers (resp. producers) that were compatible with its older version. With our prototype tool, we identified 5 known bugs and 1 potential bug in (a) sender-receiver modules of Linux network drivers of 3 vendors and (b) different versions of a TIFF image library. 1998 ACM Subject Classification D.2.4 Software/Program Verification; D.2.12 Interoperability

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Optimizing KLIC Generic Objects by Static Analysis

The KLIC system has achieved both high portability and extensibility by employing C as an intermediate language and featuring generic objects that allow users to dene new classes of data. It is also e cient for an untyped and unmoded language with ne-grained concurrency, but its exibility incurs runtime overhead that could be reduced by static analysis. This paper studies how constraint-based s...

متن کامل

Static Detection of Malicious Code in Executable Programs

In this paper, we propose a new approach for the static detection of malicious code in executable programs. Our approach rests on a semantic analysis based on behaviour that even makes possible the detection of unknown malicious code. This analysis is carried out directly on binary code. Static analysis offers techniques for predicting properties of the behaviour of programs without running the...

متن کامل

Using a Model Checker to Determine Worst-case Execution Time

Hard real-time systems use worst-case execution time (WCET) estimates to ensure that timing requirements are met. The typical approach for obtaining WCET estimates is to employ static program analysis methods. While these approaches provide WCET bounds, they struggle to analyze programs with loops whose iteration counts depend on input data. Such programs mandate user-guided annotations. We pro...

متن کامل

Deductive Software Verification

Deductive Software Verification is characterized by three ingredients: first, target programs as well as the properties to be verified are represented as logical formulae that must be proven to be valid; second, validity is proven by deduction in a logic calculus; third, computer assistance is used for proof search and bookkeeping. In contrast to static analysis and model checking it is possibl...

متن کامل

Conditional Equivalence

A typical software module evolves through many versions over the course of its development. To maintain compatibility with module clients, it is crucial that a module’s behavior at its interface does not change in an undesirable manner across versions. The problem of introducing changes which break interface behavior remains one of the most daunting challenges in the maintenance of large softwa...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2012